package com.headwind.multi.datasource.holder;

import com.headwind.multi.datasource.config.DataSourceConfig;

/**
 * @author : Headwind
 * @version : 1.0
 * @date : Created in 2020/8/13
 * @description : 数据源动态处理类
 */
public class DynamicDataSourceHolder {

    /**
     * 生命当前线程私有的ThreadLocal
     */
    private static final ThreadLocal<String> HOLDER = new ThreadLocal<>();

    /**
     * 数据源设定
     *
     * @param dataSource 数据源
     */
    public static void setDataSource(String dataSource) {
        HOLDER.set(dataSource);
    }

    /**
     * 数据源取得
     *
     * @return 当前数据源
     */
    public static String getDataSource() {
        String lookUpKey = HOLDER.get();
        return lookUpKey == null ? DataSourceConfig.MASTER_DATASOURCE : lookUpKey;
    }

    /**
     * 使用完后设置成默认数据源
     */
    public static void clearDataSource() {
        HOLDER.remove();
    }
}
